#ifndef CPU_H
#define CPU_H

struct regs
{
  unsigned int ds, es, fs, gs;  /* pushed the segs last */
  unsigned int edi, esi, ebp, esp, ebx, edx, ecx, eax;  /* pushed by 'pusha' */
  unsigned int int_no, err_code;        /* our 'push byte #' and ecodes do this */
  unsigned int eip, cs, eflags, useresp, ss;    /* pushed by the processor auto */
};

unsigned int _read_cr0();
unsigned int _read_cr2();
unsigned int _read_cr3();

void _write_cr0(unsigned int);
void _write_cr3(unsigned int);

void _hlt() __attribute__((noreturn));
#endif
